package com.cyzy.controller;

import com.cyzy.dto.Result;
import com.cyzy.pojo.AdminUser;
import com.cyzy.pojo.Menu;
import com.cyzy.pojo.RoleMenu;
import com.cyzy.service.MenuService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/menu")
public class MenuController {
    //RESTful接口规范：查询用get  增加用post  修改用put  删除用delect
    //登录用post

    @Autowired
    private MenuService menuService;

    //查询菜单列表
    @GetMapping("/list")
    public Result getMenuList(AdminUser adminUser){
        List<Menu> MenuList = menuService.selectMenuList(adminUser.getUsername());
//        System.out.println(MenuList + " " + "222222222222222222222222222222222");
        if (MenuList.isEmpty()){
            return Result.error().message("查询失败！");
        }
        return Result.ok().data("menu",MenuList);
    }

    //查询管理员表
    @GetMapping("/adminmenu")
    private Result getRoleMenuList(){
        List<RoleMenu> adminMenuList = menuService.selectRoleMenuList();
        if (adminMenuList.isEmpty()){
            return Result.error().message("暂无数据！");
        }
        return Result.ok().data("adminmenulist",adminMenuList);
    }

    @GetMapping("/page")
    public Result roleMenuPageHelper(int page,int size){
        // 启动分页，page表示当前页，size表示每页的记录数
//        PageHelper.startPage(page, size);
        PageHelper.startPage(page,size);
        // 获取分页后的数据
        List<RoleMenu> adminMenuList = menuService.selectRoleMenuList();
        if (adminMenuList.isEmpty()){
            return Result.error().message("暂无数据！");
        }

        PageInfo<RoleMenu> pageInfo = new PageInfo<>(adminMenuList);
//        System.out.println(adminMenuList);
//        System.out.println(pageInfo);
        // 返回分页后的数据列表
        return Result.ok().data("list",adminMenuList).data("count",pageInfo.getTotal());
    }

    //搜索模块的查询
    @GetMapping("/searchrolemenu")
    public Result searchrolemenu(RoleMenu roleMenu) {
        // 处理参数，防止 SQL 语句出错
        if ((roleMenu.getUsername() == null || roleMenu.getUsername().isEmpty()) &&
                (roleMenu.getRole() == null || roleMenu.getRole().isEmpty()) &&
                (roleMenu.getAdminState() == null)) {
            return Result.error().message("请至少输入一个搜索条件");
        }

        List<RoleMenu> roleMenuList = menuService.searchworkersAll(roleMenu.getUsername(),
                roleMenu.getRole(),roleMenu.getAdminState());

        if (roleMenuList != null && !roleMenuList.isEmpty()) {
            PageInfo<RoleMenu> pageInfo = new PageInfo<>(roleMenuList);
            // 返回分页后的数据列表
            return Result.ok().data("list",roleMenuList).data("count",pageInfo.getTotal());
        }

        return Result.error().message("未找到符合条件的管理员！");
    }


}
